

#ifndef ChangeDetectionCONTROLARCHITECTURE_H
#define ChangeDetectionCONTROLARCHITECTURE_H

#include "RoboroboMain/common.h"
#include "RoboroboMain/roborobo.h"

//#include "newscast/PopulationControlArchitecture.h"
//#include "multikulti/MultiKultiInstance.h"
//above 2 replaced by one below to break evolution, differentialcontrol is needed for wheel speeds (behaviorcontrol not sufficient)
#include "BehaviorControlArchitectures/DifferentialControlArchitecture.h"
#include "Utils/Rand.h"
#include "Utils/Util.h"
//#include "Utils/Controller.h"

#include "WorldModels/RobotAgentWorldModel.h"

class ChangeDetectionControlArchitecture : public DifferentialControlArchitecture {
public:
	//Initializes the variables
	ChangeDetectionControlArchitecture(RobotAgentWorldModel *__wm);
	virtual ~ChangeDetectionControlArchitecture();

	virtual void createRandomGenome();
	
/*	virtual ControllerPtr createRandomGenome();*/

	virtual double calculateStepFitness();

	virtual void step();
	virtual void reset();

	//BELOW IS DISABLED BECAUSE OF DISABLING EVOLUTION
/*	static double migrationRate;
	static double eliteSize;
	static double bestRate;
	static int migrationType;
	static int topologyType;*/

private:
	//BELOW IS DISABLED BECAUSE OF DISABLING EVOLUTION (AND WASNT USED ANYWAY)
	//bool isInVector(ControllerPtr cont, vector<ControllerPtr> * theVector);
protected:
	ControllerPtr j;
};


#endif

